iT邦幫忙

2026 iThome 鐵人賽

DAY 27
0

昨天完成全場清除技能,今天接著做第二個技能:能讓場上的目標暫時降低移動速度。
這次的技能需要消耗150點擊殺數,使用後會讓目前場上的殭屍速度降低至原本的50%,持續5秒。

製作緩速技能

技能觸發跟第一個技能一樣,擊殺數到了會亮起來,點按即可使用,這裡就不多做贅述。

首先修改原本的SkillManager新增緩速技能的觸發方法與持續時間判斷。當使用時就會對目前場上的殭屍套用緩速效果,並在5秒後恢復速度。

// 【技能二:全場緩速 5 秒】
    public void TriggerSlowDownSkill()
    {
        if (ScoreManager.Instance != null && ScoreManager.Instance.UseSkill2())
        {
            StartCoroutine(SlowDownRoutine());
            Debug.Log("【技能發動】全場緩速 5 秒!");
        }
        else
        {
            Debug.Log("擊殺數不足 150,無法施放緩速技能!");
        }
    }

    private IEnumerator SlowDownRoutine()
    {
        // 1. 抓出場上所有殭屍,施加 50% 緩速
        Target[] allTargets = FindObjectsOfType<Target>();
        foreach (Target target in allTargets)
        {
            if (target != null)
            {
                target.ApplySlowEffect(0.5f);
            }
        }

        // 2. 持續 5 秒
        yield return new WaitForSeconds(5.0f);

        // 3. 5 秒後再次抓出場上還活著的殭屍,恢復原始速度!
        Target[] remainingTargets = FindObjectsOfType<Target>();
        foreach (Target target in remainingTargets)
        {
            if (target != null)
            {
                target.RemoveSlowEffect();
            }
        }

        Debug.Log("【緩速結束】場上殭屍速度已恢復原狀!");
    }

修改目標的速度管理

接著修改Target,新增原始速度紀錄與緩速狀態,避免緩速結束後無法恢復原本的速度。
除了新增ApplySlowEffect()和RemoveSlowEffect()之外,也需要在原本的SetSpeedAndDuration()中更新速度備份,確保能恢復到依照階級調整後的速度。

以下只列出這次新增或修改的部分:

// 緩速狀態管理
    private float originalSpeed;       // 備份原始速度
    private bool isSlowed = false;     // 是否處於緩速狀態

private void Start()
    {
        currentHp = maxHp;
        startPos = transform.position;
        targetPos = startPos + new Vector3(0, riseDistance, 0);

        // 紀錄最一開始的原始速度,做為後續還原基準
        originalSpeed = speed;

        targetRoutine = StartCoroutine(TargetRoutine());
    }

// 【技能二】套用緩速效果
    public void ApplySlowEffect(float slowMultiplier)
    {
        if (isSlowed) return; // 避免重複套用

        isSlowed = true;
        originalSpeed = speed;   // 再次確認備份當前速度
        speed *= slowMultiplier; // 降低速度(例如變成 0.5 倍)
    }

    // 【技能二】還原原始速度
    public void RemoveSlowEffect()
    {
        if (!isSlowed) return;

        speed = originalSpeed;   // 恢復成原本的速度
        isSlowed = false;
    }

    // 動態調整速度與停留時間(階梯式加速用)
    public void SetSpeedAndDuration(float speedMultiplier, float durationMultiplier)
    {
        speed *= speedMultiplier;          
        showDuration *= durationMultiplier; 
        originalSpeed = speed; // 更新備份速度
    }

這樣就能讓目前場上的殭屍暫時降低移動速度,並在5秒後恢復。這次的技能只會影響發動時場上已經存在的殭屍,新生成的殭屍仍會維持正常速度。

第二十七天的成果與之後目標

今天主要完成了以下幾個部分:

  • 技能消耗:使用緩速技能需要消耗150點擊殺數。
  • 全場緩速:讓目前場上的殭屍速度降低至50%,持續5秒。
  • 速度恢復:技能結束後,恢復殭屍原本的移動速度。
    目前已經完成全場清除與全場緩速兩種技能,接下來會繼續測試技能的使用情況,並逐步調整遊戲中的功能。

上一篇
Day 26|製作全場清除技能
下一篇
Day 28|製作技能冷卻系統
系列文
從基礎到實作:使用 Google AI 學習程式設計 共 29 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言